package com.yuw.package6;

import java.util.Random;
import java.util.Scanner;

public class StudentMaster {
    // 属性
    private Student[] students; // 学生数组
    private int count; // 学生人数 -- 因为要进行初始化，数组需要创建时给定长度，所有需要有一个长度的属性

    public StudentMaster(int count) {
        this.count = count;
        // 根据人数创建学生数组初始化学生数组
        if (count > 0) {
            students = new Student[count];
            // 使用随机数，初始化学生数组
            initArrStudents(count);
        }
    }

    /**
     * 根据学生人数随机创建学生，并填充到学生数组中
     *
     * @param count 学生人数
     */
    private void initArrStudents(int count) {
        // 使用控制台输入工具类Scanner从控制台输入内容
        Scanner scanner = new Scanner(System.in);
        // 获取生成随机数的对象类
        Random random = new Random();
        // 获取0-2的随机数： 0 - 计算机学生 1-英语系学生 2-文学系学生

        for (int i = 0; i < count; i++) {
            // 随机获取一个学生类型的数值
            int stuType = random.nextInt(3);
            if (stuType == 0) {
                // 创建一个计算机系的学生对象实例
                StudentComputer stu = new StudentComputer();

                // 使用Scanner初始化计算机系的学生信息
                System.out.println("请输入计算机系学生的姓名：");
                String stuName = scanner.next();
                System.out.println("请输入计算机系学生的学号：");
                String stuNum = scanner.next();
                System.out.println("请输入计算机系学生的性别：");
                String stuSex = scanner.next();
                System.out.println("请输入计算机系学生的操作成绩：");
                double optScore = scanner.nextDouble();
                System.out.println("请输入计算机系学生的英语写作成绩：");
                double enWritingScore = scanner.nextDouble();
                System.out.println("请输入计算机系学生的期中成绩：");
                double middleScore = scanner.nextDouble();
                System.out.println("请输入计算机系学生的期末成绩：");
                double endScore = scanner.nextDouble();

                // 设置计算机系学生信息
                stu.setStuNum(stuNum);
                stu.setStuName(stuName);
                stu.setStuSex(stuSex);
                stu.setMiddleScore(middleScore);
                stu.setEndScore(endScore);
                stu.setStuDeptName("计算机系");
                stu.setOptScore(optScore);
                stu.setEnWritingScore(enWritingScore);

                // 把这个学生加入学生数组
                students[i] = stu;

            } else if (stuType == 1) {
                // 使用Scanner初始化英语系的学生信息
                // 创建一个计算机系的学生对象实例
                StudentEnglish stu = new StudentEnglish();
                // 使用Scanner初始化计算机系的学生信息
                // TODO

                // 把这个学生加入学生数组
                students[i] = stu;
            } else {
                // 使用Scanner初始化文学系的学生信息
                StudentLiterary stu = new StudentLiterary();
                // 使用Scanner初始化计算机系的学生信息
                // TODO
                // 把这个学生加入学生数组
                students[i] = stu;
            }
        }

    }

    // 行为

    /**
     * 打印学生信息
     */
    public void pringStudentInfo() {
        // 判断学生数组是否不为空
        if (students != null && students.length > 0) {
            for (Student stu : students) {
                System.out.println("学号:" + stu.getStuNum() + " 姓名：" + stu.getStuName() + " 性别：" +
                        stu.getStuSex() + " 综合成绩：" + stu.calculateTotalScore());
            }
        }
    }

}
